﻿

#region Using

using System;
using UnityEngine;

#endregion

namespace PureMVC.Interfaces
{
    
    public interface IFacade : INotifier
	{
		void RegisterProxy(IProxy proxy);

		IProxy RetrieveProxy(string proxyName);
		
        IProxy RemoveProxy(string proxyName);

		bool HasProxy(string proxyName);


        void RegisterCommand(string notificationName, Type commandType);

		void RemoveCommand(string notificationName);

		bool HasCommand(string notificationName);


		void RegisterMediator(IMediator mediator);

		IMediator RetrieveMediator(string mediatorName);

        IMediator RemoveMediator(string mediatorName);

		bool HasMediator(string mediatorName);

		void NotifyObservers(INotification note);

        void AddManager(string typeName, object obj);

        T AddManager<T>(string typeName) where T : Component;

        T GetManager<T>(string typeName) where T : class;

        void RemoveManager(string typeName);
	}
}
